package com.woniuxy.woniuhis.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.woniuxy.woniuhis.entity.Patient;
import com.woniuxy.woniuhis.exception.PatientServiceException;
import com.woniuxy.woniuhis.mapper.PatientMapper;
import com.woniuxy.woniuhis.service.PatientService;
import com.woniuxy.woniuhis.util.ResponseJson;
import com.woniuxy.woniuhis.util.UUIDUtil;

@Service
public class PatientServiceImpl implements PatientService{

	@Autowired
	PatientMapper patientMapper;
	
	@Override
	public List<Patient> findAllPatients() {
		try {
			List<Patient> patients = patientMapper.selectAllPatients();
			return patients;
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}
	
	@Override
	public ResponseJson<Patient> findPatientsByPage(Integer page, Integer limit) {
		try {
			//分页获取当页得数据
			PageHelper.startPage(page, limit);
			List<Patient> patients = patientMapper.selectAllPatients();
			PageInfo<Patient> patientsPageInfo = new PageInfo<Patient>(patients);
			//查询总记录数
			int count= patientMapper.selectPatientCount();
			//将数据转换为layui可识别得数据结构，并为其赋值
			ResponseJson<Patient> responseJsonPatient = new ResponseJson<Patient>();
			responseJsonPatient.setCode(0);
			responseJsonPatient.setCount(count);
			responseJsonPatient.setMsg("");
			responseJsonPatient.setData(patientsPageInfo.getList());
			return responseJsonPatient;
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	@Override
	public void addPatient(Patient patient) {
		try {
			//为患者生成主键
			patient.setPatientId(UUIDUtil.uuid32());
			patientMapper.insertPatient(patient);
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	@Override
	public void addOrEditPatient(Patient patient) {
		try {
			//如果患者有id则更新患者信息，没有id则添加一个患者信息
			if(patient.getPatientId()==null||patient.getPatientId()=="") {
				patient.setPatientId(UUIDUtil.uuid32());
				patientMapper.insertPatient(patient);
			}else {
				patientMapper.updatePatientById(patient);
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	@Override
	public void deletePatientById(String patientId) {
		try {
			//可能是删除一个患者，也可能删除一批患者，所以要遍历
			String[] patientIds = patientId.split(",");
			for(String id:patientIds) {
				patientMapper.deletePatientById(id);
			}
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	@Override
	public ResponseJson<Patient> searchPatientByCondition(Patient patient) {
		try {
			//向数据库查询所有符合条件的患者
			List<Patient> data = patientMapper.selectPatientsByCondition(patient);
			//封装layui需要的数据结构
			ResponseJson<Patient> responseJson = new ResponseJson<Patient>();
			responseJson.setData(data);
			responseJson.setCode(0);
			responseJson.setCount(data.size());
			responseJson.setMsg("");
			return responseJson;
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	@Override
	public Patient findPatientById(String patientId) {
		try {
			return patientMapper.selectPatientById(patientId);
		} catch (Exception e) {
			e.printStackTrace();
			throw new PatientServiceException("系统维护中");
		}
	}

	

}
